﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using ot;

/// <summary>
/// Descripción breve de CConsultaOtTransporte
/// </summary>

namespace consultasSql
{
    public class CConsultaOtTransporte
    {
        /*UPDATE*/
        public bool update(CTransporte objeto)
        {
            bool bandera = false;

            string consulta = "UPDATE OTCab SET IdTransporte = @IdTransporte, TipoServicio = @TipoServicio, CostoTrans = @CostoTrans, Email = @Email, ObsTrans = @ObsTrans WHERE Id = @id     UPDATE RemitoCab SET NombTrans = (SELECT TOP 1 Transporte.NombTrans FROM Transporte INNER JOIN OtCab ON Transporte.Id = OtCab.IdTransporte) WHERE RemitoCab.id = (SELECT OtCab.IdRemCab FROM OtCab WHERE Id = @id)";


            using (SqlConnection objConexion = new SqlConnection(CCadenaConexionSql.cadConexion()))
            {
                using (SqlCommand command = new SqlCommand())
                {
                    if (objConexion.State == ConnectionState.Closed)
                    { objConexion.Open(); }

                    command.CommandType = CommandType.Text;
                    command.CommandText = consulta;

                    command.Parameters.Clear();



                    command.Parameters.AddWithValue("@id", objeto.Id);

                    if (!String.IsNullOrEmpty(objeto.IdTransporte))
                    {
                        command.Parameters.Add(new SqlParameter("@IdTransporte", SqlDbType.Int));
                        command.Parameters["@IdTransporte"].Value = Convert.ToInt32(objeto.IdTransporte);
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@IdTransporte", DBNull.Value);
                    }


                    command.Parameters.AddWithValue("@TipoServicio", objeto.TipoServicio);


                    if (!String.IsNullOrEmpty(objeto.CostoTrans))
                    {
                        command.Parameters.Add(new SqlParameter("@CostoTrans", SqlDbType.Decimal));
                        command.Parameters["@CostoTrans"].Value = objeto.CostoTrans;
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@CostoTrans", DBNull.Value);
                    }

                    command.Parameters.AddWithValue("@Email", objeto.Email);
                    command.Parameters.AddWithValue("@ObsTrans", objeto.ObsTrans);


                    command.Connection = objConexion;

                    try
                    {
                        command.ExecuteNonQuery();
                        bandera = true;
                    }
                    catch
                    {
                        bandera = false;
                    }

                    if (objConexion.State == ConnectionState.Open)
                    { objConexion.Close(); }
                }
            }

            updateEstado(objeto.Id);

            return bandera;
        }

        //guardo el estado en que se encuentra la orden
        private bool updateEstado(int IdOtCab)
        {
            CEstadoOt estado = new CEstadoOt();

            estado.IdOtCab = IdOtCab;
            estado.Transporte = true;

            return new CConsultaEstadoOt().update(estado);
        }

    }
}